﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class vendas_cobrarcontrato : System.Web.UI.Page
{
    public string Message
    {
        get;
        set;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        // 2 lancamento
        // 3 conferencia
        // 9 adm

        string Tipo_Permissao_Vendas = "" + this.Session["Tipo_Permissao_Vendas"];
        int iSellsPermission = 0;
        try { iSellsPermission = int.Parse(Tipo_Permissao_Vendas); }
        catch { }

        // Checking permissions
        if ((iSellsPermission == 2 || iSellsPermission == 3 || iSellsPermission == 9) == false)
        {
            this.Response.Write("login.aspx");
        }

        if (this.Request.Form.Count > 0)
        {
            string Id_Venda = "" + this.Request.Form["Id_Venda"];
            // Create
            //if (string.IsNullOrEmpty(id_fornecedor) == true)
            {
                try
                {
                    PL.DataBase.DAO dao = new PL.DataBase.DAO();
                    dao.Setup(PL.DataBase.DatabaseTypes.MySql, PL.General.Instance.ConnectionString);
                    dao.Connector.Open();

                    // Id da venda original
                    string Id_Venda_Original = "" + this.Request["Id_Venda_Original"];
                    if (string.IsNullOrEmpty(Id_Venda_Original) == true)
                    {
                        Id_Venda_Original = "-1";
                    }

                    // Dados do vendedor
                    string[] DadosVendedor = ("" + this.Request.Form["DadosVendedor"]).Split('#');
                    string Id_VendedorSAC = "";
                    string NomeVendedorSAC = "";
                    if (DadosVendedor.Length == 2)
                    {
                        Id_VendedorSAC = DadosVendedor[0];
                        NomeVendedorSAC = DadosVendedor[1];
                    }

                    // Dados do cliente
                    string[] DadosCliente = ("" + this.Request.Form["DadosCliente"]).Split('#');
                    string Id_ClienteSAC = "";
                    string NomeClienteSAC = "";
                    if (DadosCliente.Length == 2)
                    {
                        Id_ClienteSAC = DadosCliente[0];
                        NomeClienteSAC = DadosCliente[1];
                    }

                    string RegistroCriadoPor = "" + this.Session["UserData-ID"];
                    string RegistroCriadoEm = PL.General.GetTodaysDate();
                    string VersaoMaisAtualDoRegistro = "1";
                    string Id_Permissao_CriacaoRegistro = "" + iSellsPermission;

                    string sql = " INSERT INTO tb_Vendas (RegistroCriadoPor, RegistroCriadoEm, VersaoMaisAtualDoRegistro, Id_Permissao_CriacaoRegistro, Id_VendedorSAC, NomeVendedorSAC, Id_ClienteSAC, NomeClienteSAC ";
                    foreach (string key in Request.Form.AllKeys)
                    {
                        // Checking permission
                        /*if (key.StartsWith("Lancamento_") == true && (iSellsPermission != 2 && iSellsPermission != 9))
                        {
                            this.Response.Redirect("login.aspx");
                        }
                        if (key.StartsWith("Conferencia_") == true && (iSellsPermission != 3 && iSellsPermission != 9))
                        {
                            this.Response.Redirect("login.aspx");
                        }*/

                        if (key != "Id_Venda" && key != "DadosVendedor" && key != "DadosCliente")
                        {
                            sql += ", " + key + "";
                        }
                    }
                    sql += " ) VALUES (";
                    sql += "'" + RegistroCriadoPor + "',";
                    sql += "'" + RegistroCriadoEm + "',";
                    sql += "'" + VersaoMaisAtualDoRegistro + "',";
                    sql += "'" + Id_Permissao_CriacaoRegistro + "',";
                    sql += "'" + Id_VendedorSAC + "',";
                    sql += "'" + NomeVendedorSAC + "',";
                    sql += "'" + Id_ClienteSAC + "',";
                    sql += "'" + NomeClienteSAC + "'";

                    foreach (string key in Request.Form.AllKeys)
                    {
                        // Checking permission
                        /*if (key.StartsWith("Lancamento_") == true && (iSellsPermission != 2 && iSellsPermission != 9))
                        {
                            this.Response.Redirect("login.aspx");
                        }
                        if (key.StartsWith("Conferencia_") == true && (iSellsPermission != 3 && iSellsPermission != 9))
                        {
                            this.Response.Redirect("login.aspx");
                        }*/

                        if (key == "Lancamento_NumeroContrato" || key == "Conferencia_NumeroContrato")
                        {
                            sql += ",'" + Request.Form[key].Trim().Replace(".", "") + "'";
                        }
                        else if (key != "Id_Venda" && key != "DadosVendedor" && key != "DadosCliente")
                        {
                            sql += ",'" + Request.Form[key].Trim() + "'";
                        }
                    }

                    sql += " ); SELECT LAST_INSERT_ID() AS NewId";

                    // Inserindo e pegando o id do registro criado
                    string newId = "NewId";
                    var reader = dao.Connector.QueryWithReader(sql);
                    if (reader.Read() == true)
                    {
                        newId = "" + reader["NewId"];
                    }
                    reader.Close();

                    // Marcando que os outros registros 
                    if (string.IsNullOrEmpty(Id_Venda) == false)
                    {
                        // This is the first update
                        if (Id_Venda_Original == "-1")
                        {
                            sql = "UPDATE tb_Vendas SET VersaoMaisAtualDoRegistro=0  WHERE (Id_Venda=" + Id_Venda + ") ";
                            dao.Connector.Execute(sql);

                            sql = "UPDATE tb_Vendas SET Id_Venda_Original=" + Id_Venda + "  WHERE (Id_Venda=" + newId + ") ";
                            dao.Connector.Execute(sql);
                        }
                        // Other updates
                        else
                        {
                            sql = "UPDATE tb_Vendas SET VersaoMaisAtualDoRegistro=0  WHERE (Id_Venda_Original=" + Id_Venda_Original + ") AND Id_Venda <> " + newId + " AND RegistroCriadoEm <> '" + RegistroCriadoEm + "'";
                            dao.Connector.Execute(sql);
                        }

                        dao.Connector.Execute(sql);
                    }
                    dao.Connector.Close();
                    this.Response.Redirect("vendas_ver.aspx");
                }
                catch (Exception errorr)
                {
                    this.Message = "Falha ao criar/editar o registro, tente novamente daqui alguns minutos! " + errorr.Message;
                }
            }
        }
    }

    public void WriteVendors(string toSelect)
    {
        /*PL.DataBase.DAO dao = new PL.DataBase.DAO();
        dao.Setup(PL.DataBase.DatabaseTypes.SqlServer, PL.General.Instance.SACConnectionString);
        dao.Connector.Open();

        string sql = "";
        sql += "SELECT Nome, Código  FROM sacuser WHERE (Vendedor = 'True') AND (Nome <> '') AND (Excluido = 'False') ORDER BY LTRIM(RTRIM(Nome)) ";
        var reader = dao.Connector.QueryWithReader(sql);
        while (reader.Read() == true)
        {
            string selected = "";
            if (("" + reader["Código"]) == toSelect)
            {
                selected = "selected=\"selected\"";
            }
            this.Response.Write("<option " + selected + " value=\"" + reader["Código"] + "#" + reader["Nome"] + "\">" + reader["Nome"] + "</option>");
        }
        reader.Close();
        dao.Connector.Close();*/
    }

    public void WriteClients(string toSelect)
    {
         PL.DataBase.DAO dao = new PL.DataBase.DAO();
         dao.Setup(PL.DataBase.DatabaseTypes.SqlServer, PL.General.Instance.SACConnectionString);
         dao.Connector.Open();

         string sql = "";
         sql += "SELECT Código, LTRIM(RTRIM(Nome)) AS NomeCliente FROM main WHERE (Ativo = 'True') AND (Nome <> '') AND (Excluido = 'False') ORDER BY LTRIM(RTRIM(Nome)) ";
         var reader = dao.Connector.QueryWithReader(sql);
         while (reader.Read() == true)
         {
             string selected = "";
             if (("" + reader["Código"]) == toSelect)
             {
                 selected = "selected=\"selected\"";
             }
             this.Response.Write("<option " + selected + " value=\"" + reader["Código"] + "#" + reader["NomeCliente"] + "\">" + reader["NomeCliente"] + "</option>");
         }
         reader.Close();
         dao.Connector.Close();
    }

    public void WriteProducts(string toSelect)
    {
        PL.DataBase.DAO dao = new PL.DataBase.DAO();
        dao.Setup(PL.DataBase.DatabaseTypes.MySql, PL.General.Instance.ConnectionString);
        dao.Connector.Open();

        string sql = "";
        sql += "SELECT * FROM tb_Produtos WHERE Excluido = 0 ORDER BY NomeProduto";
        var reader = dao.Connector.QueryWithReader(sql);
        while (reader.Read() == true)
        {
            string selected = "";
            if (reader["Id_Produto"] == toSelect)
            {
                selected = "selected=\"selected\"";
            }
            this.Response.Write("<option " + selected + " value=\"" + reader["Id_Produto"] + "\">" + reader["NomeProduto"] + "</option>");
        }
        reader.Close();
        dao.Connector.Close();
    }

    public void WriteCancelReasons(string toSelect)
    {
        PL.DataBase.DAO dao = new PL.DataBase.DAO();
        dao.Setup(PL.DataBase.DatabaseTypes.MySql, PL.General.Instance.ConnectionString);
        dao.Connector.Open();

        string sql = "";
        sql += "SELECT * FROM tb_MotivosCancelamento WHERE Excluido = 0 ORDER BY Motivo";
        var reader = dao.Connector.QueryWithReader(sql);
        while (reader.Read() == true)
        {
            string selected = "";
            if (reader["Id_MotivoCancelamento"] == toSelect)
            {
                selected = "selected=\"selected\"";
            }
            this.Response.Write("<option " + selected + " value=\"" + reader["Id_MotivoCancelamento"] + "\">" + reader["Motivo"] + "</option>");
        }
        reader.Close();
        dao.Connector.Close();
    }
}